package com.elguile.laptop.baseDatos;

import java.util.Date;
import java.util.List;
import java.math.BigDecimal;
import org.junit.Test;

import com.elguile.laptop.baseDatos.RepositorioVenta;
import com.elguile.laptop.entidades.Cliente;
import com.elguile.laptop.entidades.Linea;
import com.elguile.laptop.entidades.Venta;

import static org.junit.Assert.*;

public class RepositorioVentaDeberia {

	private static final int DNI = 12345678;
	private static final String JHON_DOE = "jhon doe";
	private static final String GASEOSA = "gaseosa";
	private static final BigDecimal TRES_SOLES = new BigDecimal("3");

	@Test
	public void guardarUnaVenta() {
		RepositorioVenta repositorioVenta = new RepositorioVenta();
		Venta venta = new Venta();
		venta.add(new Linea(1, GASEOSA, TRES_SOLES));
		repositorioVenta.guarda(venta);
		Venta ventaGrabada = repositorioVenta.getPrimera();
		Linea lineaGrabada = ventaGrabada.getPrimeraLinea();
		assertEquals(repositorioVenta.cantidad(), 1);
		assertEquals(ventaGrabada.getCantidadLineas(), 1);
		assertEquals(lineaGrabada.getDescripcion(), GASEOSA);
		assertEquals(lineaGrabada.getCantidad(), 1);
		assertEquals(lineaGrabada.getPrecio(), TRES_SOLES);

	}

	@Test
	public void guardarDosVentas() {
		RepositorioVenta repositorioVenta = new RepositorioVenta(new Venta(1,
				null), new Venta(2, null));
		List<Venta> ventas = repositorioVenta.lista();
		assertEquals(ventas.get(0).getCodigoVenta(), (Integer) 1);
		assertEquals(ventas.get(1).getCodigoVenta(), (Integer) 2);
	}

	@Test
	public void guardarElCliente() {
		RepositorioVenta repositorioVenta = new RepositorioVenta();
		Cliente cliente = new Cliente();
		cliente.setCodigo(1);
		cliente.setDni(DNI);
		cliente.setNombre(JHON_DOE);
		repositorioVenta.guarda(new Venta(cliente, 1, new Date(1234567l)));
		Venta ventaGuardada = repositorioVenta.getPrimera();
		Cliente clienteGuradado = ventaGuardada.getCliente();
		assertNotNull(clienteGuradado);
		assertEquals(clienteGuradado.getNombre(), JHON_DOE);
		assertEquals(clienteGuradado.getCodigo(), (Integer) 1);
		assertEquals(clienteGuradado.getDni(), DNI);
	}

}
